home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 21 / CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso / CUCD / Programming / Python-1.4 / Source / Amiga / testset / test_argparser.py < prev    next >
Text File  |  1997-01-12  |  5KB  |  165 lines

  1. import site
  2. import dos
  3.  
  4. TestError = 'FAILED --- ArgParser'
  5.  
  6. def test(a,b):
  7.         if a!=b: raise TestError
  8.  
  9.  
  10.  
  11. print 'TESTING ARGPARSER SETUP...'
  12.  
  13. ap=dos.ArgParser('ONE')
  14. test(ap.defaults,{'ONE': None})
  15. test(ap.types,(('ONE', 'X'),))
  16. ap.new('ONE,TWO')
  17. test(ap.defaults,{'TWO': None, 'ONE': None})
  18. test(ap.types,(('ONE', 'X'), ('TWO', 'X')))
  19. ap.new('STR,INT/N')
  20. test(ap.defaults,{'STR': None, 'INT': None})
  21. test(ap.types,(('STR', 'X'), ('INT', 'N')))
  22. ap.new('STR/K,INT/N/K')
  23. test(ap.defaults,{'STR': None, 'INT': None})
  24. test(ap.types,(('STR', 'X'), ('INT', 'N')))
  25. ap.new('REQ/A,INTLIST/M/N')
  26. test(ap.defaults,{'INTLIST': []})
  27. test(ap.types,(('REQ', 'X'), ('INTLIST', 'I')))
  28. ap.new('REQ/A/K,STRLIST/M')
  29. test(ap.defaults,{'STRLIST': []})
  30. test(ap.types,(('REQ', 'X'), ('STRLIST', 'A')))
  31. ap.new('REQ/A/K,REST/F,FLAG/S')
  32. test(ap.defaults,{'FLAG': 0, 'REST': None})
  33. test(ap.types,(('REQ', 'X'), ('REST', 'X'), ('FLAG', 'S')))
  34. ap.new('BLA/M,REST/F,FLAG/S/A')
  35. test(ap.defaults,{'BLA':[], 'REST': None})
  36. test(ap.types,(('BLA', 'A'), ('REST', 'X'), ('FLAG', 'S')))
  37. #ap.new('TOGGLE/T')
  38. #test(ap.defaults,{'TOGGLE': 0})
  39. #test(ap.types,(('TOGGLE', 'T'),))
  40.  
  41. print 'TESTING ARGPARSER PARSE...'
  42. print '1) STRING'
  43. ap.new('STR')
  44. test(ap.parse('string'),{'STR':'string'})
  45. test(ap.parse('STR string'),{'STR':'string'})
  46. test(ap.parse(''),{'STR':None})
  47. print '2) NUMBER'
  48. ap.new('NUM/N')
  49. test(ap.parse('1234'),{'NUM':1234})
  50. test(ap.parse('NUM=1234'),{'NUM':1234})
  51. test(ap.parse(''),{'NUM':None})
  52. print '3) TOGGLE'
  53. print '(not yet supported)'
  54. #ap.new('TOG/T')
  55. #test(ap.parse('TOG'),{'TOG':-1})
  56. #ap.defaults['TOG']=999
  57. #test(ap.parse('TOG'),{'TOG':0})
  58. #test(ap.parse(''),{'TOG':999})
  59. print '4) SWITCH'
  60. ap.new('SW/S')
  61. test(ap.parse('SW'),{'SW':-1})
  62. ap.defaults['SW']=999
  63. test(ap.parse('SW'),{'SW':-1})
  64. test(ap.parse(''),{'SW':999})
  65. print '5) STRING LIST'
  66. ap.new('STRL/M')
  67. test(ap.parse('foo bar foobar'),{'STRL':['foo','bar','foobar']})
  68. test(ap.parse('foo'),{'STRL':['foo']})
  69. test(ap.parse('STRL foo'),{'STRL':['foo']})
  70. ap.defaults['STRL']=['dflt']
  71. test(ap.parse('blabla'),{'STRL':['blabla']})
  72. test(ap.parse(''),{'STRL':['dflt']})
  73. print '6) NUMBER LIST'
  74. ap.new('NL/M/N')
  75. test(ap.parse('1 2 3'),{'NL':[1,2,3]})
  76. test(ap.parse('123'),{'NL':[123]})
  77. test(ap.parse('NL 123'),{'NL':[123]})
  78. ap.defaults['NL']=[999]
  79. test(ap.parse('42 42 42'),{'NL':[42,42,42]})
  80. test(ap.parse(''),{'NL':[999]})
  81. print '7) /A'
  82. ap.new('STR/A')
  83. test(ap.defaults,{})
  84. test(ap.parse('string'),{'STR':'string'})
  85. test(ap.parse('STR string'),{'STR':'string'})
  86. print '8) /F'
  87. ap.new('STR/F,SW/S')
  88. test(ap.parse('foo bar   foobar 42'),{'STR':'foo bar   foobar 42', 'SW':0})
  89. test(ap.parse('foo bar SW  foobar 42'),{'STR':'foo bar SW  foobar 42', 'SW':0})
  90. test(ap.parse('SW foo bar SW  foobar 42'),{'STR':'foo bar SW  foobar 42', 'SW':-1})
  91. print '9) /K'
  92. ap.new('STR/K')
  93. test(ap.parse('STR string'),{'STR':'string'})
  94. ap.new('STR/K/F')
  95. test(ap.parse('STR string foo bar'),{'STR':'string foo bar'})
  96.  
  97. print '10) COMBINED'
  98. ap.new('FROM/A/M,TO/A,ALL/S,QUIET/S,BUF=BUFFER/K/N')
  99. test(ap.defaults,{'BUF=BUFFER': None, 'ALL': 0, 'QUIET': 0})
  100. test(ap.types,(('FROM', 'A'), ('TO', 'X'), ('ALL', 'S'), ('QUIET', 'S'), ('BUF=BUFFER', 'N')))
  101.  
  102. # Set our custom defaults:
  103. ap.defaults['BUF=BUFFER']=999
  104. ap.defaults['QUIET']=888
  105. test(ap.parse('f1 f2 f3 dest'),{'BUF=BUFFER': 999, 'TO': 'dest', 'ALL': 0, 'QUIET': 888, 'FROM': ['f1', 'f2', 'f3']})
  106. test(ap.parse('1 2 3 dest'),{'BUF=BUFFER': 999, 'TO': 'dest', 'ALL': 0, 'QUIET': 888, 'FROM': ['1', '2', '3']})
  107. test(ap.parse('1 2 3 4'),{'BUF=BUFFER': 999, 'TO': '4', 'ALL': 0, 'QUIET': 888, 'FROM': ['1', '2', '3']})
  108. test(ap.parse('src dest ALL'),{'BUF=BUFFER': 999, 'TO': 'dest', 'ALL': -1, 'QUIET': 888, 'FROM': ['src']})
  109. test(ap.parse('src dest QUIET'),{'BUF=BUFFER': 999, 'TO': 'dest', 'ALL': 0, 'QUIET': -1, 'FROM': ['src']})
  110. test(ap.parse('src dest QUIET ALL'),{'BUF=BUFFER': 999, 'TO': 'dest', 'ALL': -1, 'QUIET': -1, 'FROM': ['src']})
  111. test(ap.parse('src dest BUF=10'),{'BUF=BUFFER': 10, 'TO': 'dest', 'ALL': 0, 'QUIET': 888, 'FROM': ['src']})
  112.  
  113.  
  114. def terr(f,a):
  115.  fault=0
  116.  try:
  117.     try:
  118.         f(a)
  119.     except (dos.error,ValueError,SystemError,TypeError):
  120.         fault=1
  121.  finally:
  122.     if not fault:
  123.         raise TestError,'should have given an error'
  124.  
  125.  
  126. print 'TESTING ARGPARSER ERRORS...'
  127.  
  128. terr(ap.new,'/')
  129. terr(ap.new,'A/')
  130. terr(ap.new,'A/A/A')
  131. terr(ap.new,'A/M/F')
  132. terr(ap.new,'A/F/M')
  133. terr(ap.new,'A/M,B/M/N')
  134. terr(ap.new,'A/M,B³³/±')
  135. terr(ap.new,'A/M,B/Z')
  136. terr(ap.new,'A,A')
  137. terr(ap.new,'A,B,A')
  138.  
  139.  
  140. ap.new('FROM/A/M,TO/A,ALL/S,QUIET/S,BUF=BUFFER/K/N')
  141. ap.template='KAPUT'
  142. terr(ap.parse,'foo')
  143.  
  144. ap.new('A,B')
  145. ap.types=(1,2)
  146. terr(ap.parse,'A B')
  147. ap.reset()
  148. test(ap.types,(('A', 'X'), ('B', 'X')))
  149.  
  150. ap.new('A,B')
  151. ap.types=(('A',42),('B',42))
  152. terr(ap.parse,'A B')
  153.  
  154. ap.new('A,B')
  155. ap.types=(('A','Z'),('B','Z'))
  156. terr(ap.parse,'A B')
  157.  
  158. ap.new('')
  159. terr(ap.parse,'foo bar')
  160. terr(ap.parse,'foo')
  161. test(ap.parse(''),{})
  162.  
  163. del ap
  164. print 'ARGPARSER OK!'
  165.